import java.util.HashMap;
import java.util.Arrays;
import java.util.Map;
class Solution {
    public int longestArithSeqLength(int[] nums) {
        int n=nums.length;
        if(n==1) return 1;
        else if(n==2) return 2;
        Map<Integer,Integer> hash=new HashMap<Integer,Integer>();
        hash.put(nums[0],0);
        int[][] dp=new int[n][n];
        //dp表初始化为2
        for(int i=0;i<n;i++) Arrays.fill(dp[i],2);
        int ret=2;
        //固定第二个元素
        for(int i=1;i<n-1;i++){
            //枚举最后一个元素
            for(int j=i+1;j<n;j++){
                int d=nums[j]-nums[i];
                //如果a存在，则更新
                if(hash.containsKey(nums[i]-d))
                    dp[i][j]=dp[hash.get(nums[i]-d)][i]+1;
                ret=Math.max(dp[i][j],ret);
            }
            hash.put(nums[i],i);
        }
        return ret;
    }
}